import os
import logging
from logging.handlers import RotatingFileHandler
from dotenv import load_dotenv
import init
from init import app
from routes import init_all_routes

# 创建日志目录
log_dir = 'logs'
if not os.path.exists(log_dir):
    os.makedirs(log_dir)

# 配置日志
def setup_logging():
    # 创建日志格式
    formatter = logging.Formatter(
        '%(asctime)s - %(name)s - %(levelname)s - %(message)s',
        datefmt='%Y-%m-%d %H:%M:%S'
    )
    
    # 配置根日志记录器
    logger = logging.getLogger()
    logger.setLevel(logging.INFO)
    
    # 清除现有的处理器
    for handler in logger.handlers[:]:
        logger.removeHandler(handler)
    
    # 文件处理器 - 支持日志回滚，每50MB生成新文件，最多保留10个文件
    file_handler = RotatingFileHandler(
        os.path.join(log_dir, 'app.log'),
        maxBytes=50*1024*1024,  # 50MB
        backupCount=10,
        encoding='utf-8'
    )
    file_handler.setLevel(logging.INFO)
    file_handler.setFormatter(formatter)
    logger.addHandler(file_handler)
    
    # 控制台处理器
    console_handler = logging.StreamHandler()
    console_handler.setLevel(logging.INFO)
    console_handler.setFormatter(formatter)
    logger.addHandler(console_handler)
    
    # 设置Flask应用的日志
    app.logger.setLevel(logging.INFO)
    
    return logger

# 加载环境变量
load_dotenv()

# 设置日志
logger = setup_logging()

# 初始化所有路由
init_all_routes(app)

if __name__ == '__main__':
    logger.info("应用启动中...")
    app.run(host='0.0.0.0', debug=True)


